/*
 * @Description: 我的收藏模块服务
 */
const collectCtrl = require("../model/controller/collectCtrl");
const productCtrl = require("../model/controller/productCtrl");
const jwt = require("./utils/jwt");
const checkUser = require("./utils/checkUser");

module.exports = {
  /**
   * 添加收藏
   */
  async AddCollect(req, res, next) {
    let { user_id, product_id } = req.body;
    let result = {
      code: "002",
      msg: "添加收藏失败",
    };
    // 校验用户是否登录
    // if (!checkUser(req, res)) {
    //   return;
    // }
    // 判断该用户的收藏列表是否存在该商品
    let tempCollect = await collectCtrl.FindCollect(user_id, product_id);

    if (tempCollect) {
      result = {
        code: "003",
        msg: "该商品已经添加收藏，请到我的收藏查看",
      };
      res.send(result);
      return;
    }

    // 获取当前时间戳
    const timeTemp = new Date().getTime();
    // 把收藏商品信息插入数据库
    const okk = await collectCtrl.AddCollect(user_id, product_id, timeTemp);
    // 插入成功
    if (okk) {
      result = {
        code: "001",
        msg: "添加收藏成功",
      };
      res.send(result);
      return;
    }
    res.send(result);
  },
  /**
   * 获取用户的所有收藏商品信息
   */
  async GetCollect(req, res) {
    let { user_id } = req.body;
    let result;
    // 校验用户是否登录
    // if (!checkUser(req, res)) {
    //   return;
    // }
    // 获取所有收藏信息
    const collect = await collectCtrl.GetCollect(user_id);

    // 该用户没有收藏的商品,直接返回信息
    if (collect.length == 0) {
      result = {
        code: "002",
        msg: "该用户没有收藏的商品",
      };
      res.send(result);
      return;
    }

    let collectList = [];
    // 生成收藏商品的详细信息列表
    for (let i = 0; i < collect.length; i++) {
      const temp = collect[i];
      // 获取每个商品详细信息
      const product = await productCtrl.GetProductById(temp.product_id);
      if (product) collectList.push(product);
    }

    result = {
      code: "001",
      collectList: collectList,
    };
    res.send(result);
  },
  /**
   * 删除用户的收藏商品信息
   */
  async DeleteCollect(req, res) {
    let { user_id, product_id } = req.body;
    let result;
    // 校验用户是否登录
    // if (!checkUser(req, res)) {
    //   return;
    // }

    // 判断该用户的收藏列表是否存在该商品
    let tempCollect = await collectCtrl.FindCollect(user_id, product_id);

    if (tempCollect) {
      // 如果存在则删除
      const okk = await collectCtrl.DeleteCollect(user_id, product_id);
      // 判断是否删除成功
      if (okk>0) {
        result = {
          code: "001",
          msg: "删除收藏成功",
        };
      }
    } else {
      // 不存在则返回信息
      result = {
        code: "002",
        msg: "该商品不在收藏列表",
      };
    }
    
    res.send(result);
    return;
  },
};
